iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
Mobile Development

如何成為IOS初級工程師系列 第 6

Day-06 - 組團囉,到底是有還是沒有 - Enum, Optional

  • 分享至 

  • xImage
  •  

今天要教兩個進階的語法,這兩個沒有什麼特別的關聯,只是因為還有很多要教教不完所以放在一起講XD,我一樣給你Codecademy的進階篇章,第一節就是enum,你可以搭配練習使用。

進入正題

今天會學到

  • Enum
  • Optional

Enum

簡單來說是用來表達成員的清單,在沒有使用enum的時候,假設你要設計方位,我們需要先自己設計,東,西,南,北分別對應0,1,2,3,如下面程式碼所示

var CompassPoint = 0   //假定目前方方位是0
switch CompassPoint {
case 0: print("東")
case 1: print("西")
case 2: print("南")
case 3: print("北")
}

這樣如果時間久了或是其他人就會完全不懂數字代表的是什麼意思,如果你說不要用數字,改成用字串來表示呢?

var CompassPoint = "東"
switch CompassPoint {
case "東": print("東")
case "西": print("西")
case "南": print("南")
case "北": print("北")
}

這樣是不是看起來不錯,但是可能還是會出現問題,像是輸入字串時輸入錯了等等。
但如果使用enum上面的問題就可以完全解決,而且以後要維護也非常的方便

enum CompassPoint {   //我們先建立一個叫方位裡面的成員有東南西北
    case north
    case south
    case east
    case west
}

var direction = CompassPoint.east   //然後設定目前的方位為東

switch direction {       //之後我們用switch就可以知道有哪些值可以匹配囉
case .east: print("東")
case .west: print("西")
case .south: print("南")
case .north: print("北")
}

enum是成為強大的工程師必要的技能,不管是跟別人合作還是之後要維護專案,多多使用enum可以讓你事半功倍,我老師寫的文章非常詳盡解說enum如何使用,推薦閱讀。

Optional

如果你要宣告一個值,但是那個值不一定會有的時候,你就可以使用optional。
這邊我舉個例子你一定能明白。有一場考試,但是小明缺考了,你可以怎麼表示分數?用0分來表示?可以但是語義就有點不太對了,如果小明的分數可以直接是空的就能表示缺考了呢!

var point: Int?   //在值的型別後面加個"?"就可以表示是optional的值了,預設就是空的值nil

所以當你在處理不一定會有的資料時就可以使用optional,再舉個例子,大家都會有Last name跟First name,但是卻不是每個人都有middle name,所以middle name我們就可以使用optional來表示

let firstName: String = "Franklin"
let middleName: String?
let lastName:String = "Roosevelt"

想知道更多optional的語法可以看這裡


上一篇
Day-05 想要設計夢想藍圖? - class&struct
下一篇
Day-07 閉包到底是在包什麼? - closures
系列文
如何成為IOS初級工程師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言